<?php

/*
    realizzazione del customtype fattura_ricevuta

    questo va incluso nel file plugin che utilizza il post type
 */

// fissa gli hook
function wpf_fattura_ricevuta_hooks()
{
	// creo il plugin ed i relativi menu
	register_activation_hook(__FILE__, 'wpf_fattura_ricevuta_rewrite_flush'); // serve per i permalink
	add_action('init', 'wpf_fattura_ricevuta_init'); // quando inizializzo la pagina
	//add_action('admin_menu', 'wpf_progetto_admin_menu'); // quando genero il men di amministrazione
	add_action('admin_init', 'wpf_fattura_ricevuta_add_boxes', 1); // solo per compatibilità
// 	add_action('contextual_help', 'wpf_fattura_ricevuta_help_text', 10, 3); // genero l'help contestuale ai post, in amministrazione

	// modifico la visualizzazione dei custom-post
// 	add_filter('the_content', 'wpf_fattura_ricevuta_view'); // quando visualizzo il testo
// 	add_filter('the_title','wpf_progetto_title'); // quando visualizzo il titolo

	// genero la tabella per la visualizzazione dei fascicoli :
// 	add_filter('manage_wpf_progetto_posts_columns', 'wpf_progetto_list_column_header'); // aggiunge la colonna "azienda" alla lista dei fascicoli
// 	add_filter('manage_edit-wpf_progetto_sortable_columns', 'wpf_progetto_list_sort_columns'); // rende ordinabile per una colonna
// 	add_action('manage_wpf_progetto_posts_custom_column', 'wpf_progetto_list_column_row', 10, 2); // riempie la colonna azienda alla lista dei fascicoli
// 	add_filter('views_edit-wpf_progetto', 'wpf_progetto_link_list'); // per aggiungere link nella lista dei progetti

	// salvo i dati dei vari box creati
	add_action('save_post', 'wpf_fattura_ricevuta_generale_save', 10, 2);

// 	add_action('the_post', 'wpf_progetto_extends'); // aggiunge al progetto i suoi customfields

// 	add_filter('wpf_progetto_available_statuses', 'wpf_filter_status');
}

// inizializza quello che serve
function wpf_fattura_ricevuta_init()
{
	// creazione del posttype
	//@ATTENTION modificare le varie descrizioni
	$labels = array(
		'name' => _x('Fatture ricevute', 'Fatture ricevute'),
		'singular_name' => _x('Fattura ricevuta', 'Nome singolare delle fatture ricevute'),
		'add_new' => _x('Aggiungi nuovo', 'wp-formazione'),
		'add_new_item' => __('Nuovo fattura ricevuta'),
		'edit_item' => __('Modifica fattura ricevuta'),
		'new_item' => __('Nuovo fattura ricevuta'),
		'all_items' => __('Tutti le fatture ricevute'),
		'view_item' => __('Visualizza questa fattura ricevuta'),
		'search_items' => __('Cerca un fattura ricevuta'),
		'not_found' => __('Nessun fattura ricevuta trovata'),
		'not_found_in_trash' => __('Non ci sono fatture ricevute nel cestino'),
		'parent_item_colon' => '',
		'menu_name' => 'Fatture ricevute'
	);

	$args = array(
		'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'show_in_menu' => true,
		'query_var' => true,
		'rewrite' => array(
			'slug' => 'fattura_ricevuta'
		),
		'capability_type' => array(
			'fattura_ricevuta', 'fatture_ricevute'
		),
		'map_meta_cap' => true,
		'has_archive' => true,
		'hierarchical' => true,
		'menu_position' => null,
		'supports' => array(
			'title'
		)
	);

	register_post_type('wpf_fattura_ricevuta', $args);
}

// aggiunge alla fattura_ricevuta i suoi customtype
function wpf_fattura_ricevuta_extends($post) {
	// solo in caso di fattura_ricevuta
	if ($post->post_type != 'wpf_fattura_ricevuta')
	{
		return;
	}

	$post->utente = get_post_meta($post->ID, 'utente',true);
	$post->data_fattura_ricevuta = get_post_meta($post->ID, 'data_fattura_ricevuta', true);
	$post->modalita = get_post_meta($post->ID, 'modalita', true);
	$post->key = get_post_meta($post->ID, 'key', true);
	$post->invito = get_post_meta($post->ID, 'invito', true);
}

// serve per gestire i permalink
function wpf_fattura_ricevuta_rewrite_flush()
{
	wpf_fattura_ricevuta_init();
	flush_rewrite_rules();
}

// aggiunge i boxes necessari a
function wpf_fattura_ricevuta_add_boxes()
{
	wpf_fattura_ricevuta_generale_box();
	add_meta_box('pagamenti', 'Pagamenti', 'wpf_fattura_ricevuta_pagamenti_box', 'wpf_fattura_ricevuta', 'side', 'default', '' );
        
        register_post_parentbox('wpf_fattura_ricevuta', 'Spesa',wpf_get_query('spese_tutte'),__("Spesa a cui si riferisce la fattura", WPF_DOMAIN ));
        
}

function wpf_fattura_ricevuta_generale_box()
{
	/*
	global $post;
	global $wpf_domain;

	wp_nonce_field(plugin_basename(__FILE__), 'wpf_fattura_ricevuta_noncename');

	admin_field(
			'modalita',
			($readonly ? 'readonly' : 'longtext'),
			'Modalità di fattura_ricevuta',
			get_post_meta($post->ID, 'modalita', true),
			$wpf_domain,
			'Inserisci qui la modalità di fattura_ricevuta.'
	);

	admin_field(
			'key',
			($readonly ? 'readonly' : 'smalltext'),
			'Chiave per corso a pagamento',
			get_post_meta($post->ID, 'key', true),
			$wpf_domain,
			'Inserisci qui la chiave per il corso a pagamento.'
	);

	admin_field(
			'invito',
			($readonly ? 'readonly' : 'smalltext'),
			'Invito',
			get_post_meta($post->ID, 'invito', true),
			$wpf_domain,
			'Inserisci qui l\'invito.'
	);

	*/	
	///////////////////////////////////////////
	global $post;
	global $wpf_domain;

	// Use nonce for verification
	wp_nonce_field(plugin_basename(__FILE__), 'wpf_fattura_ricevuta');

	$readonly = (!current_user_can('approve_fatture_ricevute')) && ($post->post_status != 'published');

	$val_prj = get_posts(wpf_get_query('risorse_tutte'));
    $values = '';
    foreach ($val_prj as $id => $val )
	{
		$values .= $val->ID.':'.$val->post_title.',';
	}
    $values = trim($values,',');
	
	$form_fields = array(
			'risorsa' => array(
                'type' => ($readonly ? 'readonly' : 'select'),
               	'description' => __("Risorsa", WPF_DOMAIN ), 
                'values' => $values,
                'howto' => __("Seleziona la risorsa", WPF_DOMAIN )
            ),
        	'numero' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'),
                'description' => __("Numero", WPF_DOMAIN ), 
                'howto' => __("Numero della fattura", WPF_DOMAIN )
            ),
        	'data_emissione' => array(
                'type' => ($readonly ? 'readonly' : 'date'), 
                'description' => __("Data emissione", WPF_DOMAIN ), 
                'howto' => __("Inserisci qui la data di emissione", WPF_DOMAIN )
            ),
        	'importo' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'), 
                'description' => __("Importo", WPF_DOMAIN ), 
                'howto' => __("Inserisci l'importo", WPF_DOMAIN )
            ),
	        'cassa' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'),
                'description' => __("Cassa", WPF_DOMAIN ), 
                'howto' => __("Cassa", WPF_DOMAIN )
            ),
    	    'ritenuta' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'),
                'description' => __('Ritenuta',WPF_DOMAIN),
                'howto' => __('Inserisci la ritenuta', WPF_DOMAIN)
        	),
        	'irap' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'),
                'description' => __('IRAP',WPF_DOMAIN),
				'howto' => __('Inserisci l\'IRAP', WPF_DOMAIN)
        	),
        	'iva' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'),
                'description' => __('IVA', WPF_DOMAIN),
                'howto' => __('Inserisci l\'IVA', WPF_DOMAIN),
        	),
        	'irpef' => array(
                'type' => ($readonly ? 'readonly' : 'smalltext'),
                'description' => __('IRPEF',WPF_DOMAIN),
				'howto' => __('Inserisci l\'IRPEF', WPF_DOMAIN)
        	),
        	'note' => array(
                'type' => ($readonly ? 'readonly' : 'text'),
                'description' => __('Note',WPF_DOMAIN),
				'howto' => __('Inserisci le note', WPF_DOMAIN)
        	),
        	'documento' => array(
                'type' => ($readonly ? 'readonly' : 'file'),
                'description' => __('Documento', WPF_DOMAIN),
				'howto' => __('Carica qui la scansione del documento-fattura (max 5MB)', WPF_DOMAIN)
        	),
    	);

	register_post_box('wpf_fattura_ricevuta', 'generale', 'Generale', 'normal', 'core', $form_fields);
}

function wpf_fattura_ricevuta_pagamenti_box()
{
	global $post;

    $query = wpf_get_query('pagamenti_fattura_ricevuta', $post->ID);
    
    $columns = array(
        'data' => 'Data',
        'documento' => 'Documento',
        'importo' => 'Importo'
    );
    
    $options = array(
        'singular' => 'Pagamento',
        'plural' => 'Pagamenti',
        'actions' => array('edit' => 'Modifica', 'unlink' => 'Elimina'),
    );
    

    admin_table_posts($options, $columns, $query);
    
	/*
    $schede_nonassociate_list = query_posts(wpf_get_query('schedespesa_nonassociate'));
    $schede_nonassociate = '<option></option>';
    foreach ($schede_nonassociate_list as $id => $schede) $schede_nonassociate .= '<option value="'.$schede->ID.'">'.$schede->post_title.'</option>';
    echo '<select id="associa_scheda" name="associa_scheda">'.$schede_nonassociate.'</select>';
    echo '<input type="submit" name="associa" id="associa-scheda" value="Associa"  class="button"/>';
    echo '<a href="post-new.php?post_type='.'wpf_scheda_spesa'.'&parent='.$post->ID.'" class="button">'._('Aggiungi nuovo').'</a>';
    */
    
    
}

// cattura e salva i dati del box generale
function wpf_fattura_ricevuta_generale_save($post_id, $post)
{

	// If it is our form has not been submitted, so we dont want to do anything
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
	{
		return;
	}

	// verify this came from the our screen and with proper authorization,
	// because save_post can be triggered at other times
	/*if (!wp_verify_nonce(@$_POST['wpf_fattura_ricevuta_noncename'], plugin_basename(__FILE__)))
	{
		return;
	}*/

	if (!current_user_can('edit_fatture_ricevute'))
	{
		return;
	}

	if ($post->post_status == 'publish')
	{
		return;
	}

	if ($post->post_status == 'closed')
	{
		return;
	}
        
        if ($post->post_type != 'wpf_fattura_ricevuta')
	{
		return;
	}

	// OK, you can save the data
	$my_post = array();
	$my_post['ID'] = $post_id;
	$my_post['post_title'] = $post->nome_fattura_ricevuta;
	$my_post['post_content'] = $post->note;
	$my_post['post_excerpt'] = $post->descrizione;

	remove_action('save_post', 'wpf_fattura_ricevuta_generale_save');
	wp_update_post($my_post);
	add_action('save_post', 'wpf_fattura_ricevuta_generale_save');

	admin_field_save_post_meta($post_id,'numero_fattura_ricevuta',$post->numero_fattura_ricevuta);
	admin_field_save_post_meta($post_id,'bando_riferimento',$post->bando_riferimento);
	admin_field_save_post_meta($post_id,'estremi_bando',$post->estremi_bando);
	admin_field_save_post_meta($post_id,'data_scadenza',$post->data_scadenza);
}

wpf_fattura_ricevuta_hooks();

?>
